package com.sg.dto.biz.app.req;

import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 * @desc ImplementPushCacheSendMessageChannelComReqDto
 * @使用场景
 */
@Data
public class ImplementPushCacheSendMessageChannelComReqDto
        extends BaseDto
        implements Serializable {

    /**
     * 使用通道方式 ISHAVE_CHANNEL:判断是否有通道 ISHAVE_MEMBER_CHANNEL:判断是否有成员通道
     */
    @NotNull(message = "使用通道方式不能为空")
    @ApiModelProperty("使用通道方式")
    private String useChannelMethod;

    /**
     * 消息模板标识
     */
    @NotNull(message = "消息模板标识不能为空")
    @ApiModelProperty("消息模板标识")
    private String messageTemplateCode;

    /**
     * 消息位置标识
     */
    @NotNull(message = "消息位置标识不能为空")
    @ApiModelProperty("消息位置标识")
    private String messageLocationTypeCode;

    /**
     * 消息提示类型 RED_POINT_TYPE:红点型 NUMBER_TYPE:数量型 MIX_TYPE:混合型
     */
    @NotNull(message = "消息提示类型不能为空")
    @ApiModelProperty("消息提示类型")
    private String messagePromptType;

    /**
     * 是否平台代操作 TRUE:是 FALSE:否
     */
    @NotNull(message = "是否平台代操作不能为空")
    @ApiModelProperty("是否平台代操作")
    private String platformReplace;

    /**
     * 通道缩略图地址
     */
    @NotNull(message = "通道缩略图地址不能为空")
    @ApiModelProperty("通道缩略图地址")
    private String channelLogo;

    /**
     * 消息使用通道类别 INTELLIGENT_STUDY:智能学习 INTELLIGENT_CUSTOMER_SERVICE:智能客服 NOTIFICATION_ANNOUNCEMENT:通知公告 CONTENT_COMMUNICATION:内容沟通 WORK_CIRCLE:工作圈 IDEA:想法
     */
    @ApiModelProperty("消息使用通道类别")
    private String msgChannelClassCode;

    /**
     * 通道类型编码 MESSAGE_ASSISTANT:消息助手 PERSONAL_SESSION:个人会话 GROUP_SESSION:内容圈子群会话 CUSTOMER_SERVICE_SESSION:客服会话 CONTENT_COMMENT_SESSION:1111圈子内容评论会话（废弃） NOT_COMMENT_SESSION:非内容圈子评论会话 CONTENT_ORIGIN_QA_SESSION:文案助手 THIRD_QA_SESSION:独立第三方问答 ORG_GROUP:组织群 DEPT_GROUP:部门群 DEPT_IDEA_GROUP:部门想法 PERSONAL_IDEA_SESSION:个人想法 NORMAL_GROUP_SESSION:普通会话群
     */
    @NotNull(message = "通道类型编码不能为空")
    @ApiModelProperty("通道类型编码")
    private String channelTypeCode;

    /**
     * 通道名称
     */
    @NotNull(message = "通道名称不能为空")
    @ApiModelProperty("通道名称")
    private String channelName;

    /**
     * 通道归属主体内容类型编码 ORG_OR_DEPT:组织或部门 INTELLIGENT_HARDWARE_EQUIPMENT:智能硬件设备 OMS_TARGET_CYCLE:目标周期表 OMS_EVALUATION_OBJECT_TARGET_CYCLE:被评对象目标周期表 OMS_TARGET:目标表 OMS_TARGET_CATEGORY:目标分类表 OMS_TARGET_OBJECTIVE:指标表 OMS_TASK:任务表 OMS_ORG_INDUCTION_RECORD:就职记录表 OMS_FRAMEWORK_ORIGINAL_ROLE_MEMBER:身份人员表 OMS_ORG_DEPT:部门表 OMS_BASE_HOST:宿主表 OMS_FRAMEWORK_SPACE:空间表 OMS_TSPE_CYCLE_STAGE_DATA:周期阶段资料记录 OMS_EVALUATION_TEMPLATE:评价模板 OMS_EVALUATION_PORTRAIT:评价画像表 OMS_ORG_POSITION:职务表 OMS_VIRTUAL_ORG_MEMBER:虚拟组织成员表 OMS_PLANNING:规划资料表 OMS_FRAMEWORK_USERS:个人账号表 OMS_EXECUTE_CYCLE_STAGE:执行周期阶段表 OMS_CONF_SCHEME:配置方案表 OMS_EVA_OBJ_TARGET_CYCLE_OSET:被评对象目标周期目标设置表 OMS_EVA_OBJ_TARGET_CYCLE_WEIGHT_SET:被评对象目标周期权重设置表 OMS_NOTICE:通知公告表 OMS_CYCLE:周期表 OMS_EVALUATION_SUBJECT:评价主题表 OMS_BIZ_APP_BATCH:业务应用批次表 OMS_EVA_BATCH_RELATED_SET:评价模板批次相关设置表 OMS_TARGET_CYCLE_PLAN_SET:目标周期规划设置表 OMS_TARGET_OBJECTIVE_PLAN_EXTEND:指标扩展规划设置表 OMS_MESSAGE_CHANNEL:通道表 OMS_ORG_ORGANIZATION:组织表 OMS_PROJECT:项目表 OMS_ORG_DEPT:部门表 OMS_QUESTION:问题表 OMS_OFFICIAL_DOCUMENT:公文表 OMS_VIRTUAL_ORG:虚拟组织表 OMS_MESSAGE:消息表 OMS_MESSAGE_LOCATION:消息位置表 OMS_MESSAGE_MEMBER:成员接收消息表 OMS_MESSAGE_MEMBER_CHANNEL_RELATION:成员通道关系表
     */
    @NotNull(message = "通道归属主体内容类型编码不能为空")
    @ApiModelProperty("通道归属主体内容类型编码")
    private String newTableTypeCode;

    /**
     * 通道归属主体内容ID
     */
    @NotNull(message = "通道归属主体内容ID不能为空")
    @ApiModelProperty("通道归属主体内容ID")
    private String newEntityId;

    /**
     * 归属虚拟组织ID
     */
    @ApiModelProperty("归属虚拟组织ID")
    private String virtualOrgId;

    /**
     * 通道归属空间ID
     */
    @NotNull(message = "通道归属空间ID不能为空")
    @ApiModelProperty("通道归属空间ID")
    private String channelSpaceId;

    /**
     * 通道归属联盟应用ID
     */
    @NotNull(message = "通道归属联盟应用ID不能为空")
    @ApiModelProperty("通道归属联盟应用ID")
    private String channelAppId;

    /**
     * 消息重要紧急度层级
     */
    @NotNull(message = "消息重要紧急度层级不能为空")
    @ApiModelProperty("消息重要紧急度层级")
    private Long messageImportantLevel;

    /**
     * 内容表编码 ORG_OR_DEPT:组织或部门 INTELLIGENT_HARDWARE_EQUIPMENT:智能硬件设备 OMS_TARGET_CYCLE:目标周期表 OMS_EVALUATION_OBJECT_TARGET_CYCLE:被评对象目标周期表 OMS_TARGET:目标表 OMS_TARGET_CATEGORY:目标分类表 OMS_TARGET_OBJECTIVE:指标表 OMS_TASK:任务表 OMS_ORG_INDUCTION_RECORD:就职记录表 OMS_FRAMEWORK_ORIGINAL_ROLE_MEMBER:身份人员表 OMS_ORG_DEPT:部门表 OMS_BASE_HOST:宿主表 OMS_FRAMEWORK_SPACE:空间表 OMS_TSPE_CYCLE_STAGE_DATA:周期阶段资料记录 OMS_EVALUATION_TEMPLATE:评价模板 OMS_EVALUATION_PORTRAIT:评价画像表 OMS_ORG_POSITION:职务表 OMS_VIRTUAL_ORG_MEMBER:虚拟组织成员表 OMS_PLANNING:规划资料表 OMS_FRAMEWORK_USERS:个人账号表 OMS_EXECUTE_CYCLE_STAGE:执行周期阶段表 OMS_CONF_SCHEME:配置方案表 OMS_EVA_OBJ_TARGET_CYCLE_OSET:被评对象目标周期目标设置表 OMS_EVA_OBJ_TARGET_CYCLE_WEIGHT_SET:被评对象目标周期权重设置表 OMS_NOTICE:通知公告表 OMS_CYCLE:周期表 OMS_EVALUATION_SUBJECT:评价主题表 OMS_BIZ_APP_BATCH:业务应用批次表 OMS_EVA_BATCH_RELATED_SET:评价模板批次相关设置表 OMS_TARGET_CYCLE_PLAN_SET:目标周期规划设置表 OMS_TARGET_OBJECTIVE_PLAN_EXTEND:指标扩展规划设置表 OMS_MESSAGE_CHANNEL:通道表 OMS_ORG_ORGANIZATION:组织表 OMS_PROJECT:项目表 OMS_ORG_DEPT:部门表 OMS_QUESTION:问题表 OMS_OFFICIAL_DOCUMENT:公文表 OMS_VIRTUAL_ORG:虚拟组织表 OMS_MESSAGE:消息表 OMS_MESSAGE_LOCATION:消息位置表 OMS_MESSAGE_MEMBER:成员接收消息表 OMS_MESSAGE_MEMBER_CHANNEL_RELATION:成员通道关系表
     */
    @NotNull(message = "内容表编码不能为空")
    @ApiModelProperty("内容表编码")
    private String conTableTypeCode;

    /**
     * 内容表主键ID
     */
    @NotNull(message = "内容表主键ID不能为空")
    @ApiModelProperty("内容表主键ID")
    private String conEntityId;

    /**
     * 协同内容类型编码 ORG_OR_DEPT:组织或部门 INTELLIGENT_HARDWARE_EQUIPMENT:智能硬件设备 OMS_TARGET_CYCLE:目标周期表 OMS_EVALUATION_OBJECT_TARGET_CYCLE:被评对象目标周期表 OMS_TARGET:目标表 OMS_TARGET_CATEGORY:目标分类表 OMS_TARGET_OBJECTIVE:指标表 OMS_TASK:任务表 OMS_ORG_INDUCTION_RECORD:就职记录表 OMS_FRAMEWORK_ORIGINAL_ROLE_MEMBER:身份人员表 OMS_ORG_DEPT:部门表 OMS_BASE_HOST:宿主表 OMS_FRAMEWORK_SPACE:空间表 OMS_TSPE_CYCLE_STAGE_DATA:周期阶段资料记录 OMS_EVALUATION_TEMPLATE:评价模板 OMS_EVALUATION_PORTRAIT:评价画像表 OMS_ORG_POSITION:职务表 OMS_VIRTUAL_ORG_MEMBER:虚拟组织成员表 OMS_PLANNING:规划资料表 OMS_FRAMEWORK_USERS:个人账号表 OMS_EXECUTE_CYCLE_STAGE:执行周期阶段表 OMS_CONF_SCHEME:配置方案表 OMS_EVA_OBJ_TARGET_CYCLE_OSET:被评对象目标周期目标设置表 OMS_EVA_OBJ_TARGET_CYCLE_WEIGHT_SET:被评对象目标周期权重设置表 OMS_NOTICE:通知公告表 OMS_CYCLE:周期表 OMS_EVALUATION_SUBJECT:评价主题表 OMS_BIZ_APP_BATCH:业务应用批次表 OMS_EVA_BATCH_RELATED_SET:评价模板批次相关设置表 OMS_TARGET_CYCLE_PLAN_SET:目标周期规划设置表 OMS_TARGET_OBJECTIVE_PLAN_EXTEND:指标扩展规划设置表 OMS_MESSAGE_CHANNEL:通道表 OMS_ORG_ORGANIZATION:组织表 OMS_PROJECT:项目表 OMS_ORG_DEPT:部门表 OMS_QUESTION:问题表 OMS_OFFICIAL_DOCUMENT:公文表 OMS_VIRTUAL_ORG:虚拟组织表 OMS_MESSAGE:消息表 OMS_MESSAGE_LOCATION:消息位置表 OMS_MESSAGE_MEMBER:成员接收消息表 OMS_MESSAGE_MEMBER_CHANNEL_RELATION:成员通道关系表
     */
    @ApiModelProperty("协同内容类型编码")
    private String cooperateContentTypeCode;

    /**
     * 协同内容ID
     */
    @ApiModelProperty("协同内容ID")
    private String cooperateContentId;

    /**
     * 协同内容名称
     */
    @ApiModelProperty("协同内容名称")
    private String surfaceContName;

    /**
     * 媒介类型 VIDEO:视频 AUDIO:音频 FILE:文件 PIC:图片
     */
    @ApiModelProperty("媒介类型")
    private String mediaType;

    /**
     * 媒介地址
     */
    @ApiModelProperty("媒介地址")
    private String mediaAddress;

    /**
     * 消息标题
     */
    @ApiModelProperty("消息标题")
    private String messageTitle;

    /**
     * 对象名称
     */
    @NotNull(message = "对象名称不能为空")
    @ApiModelProperty("对象名称")
    private String objectName;

    /**
     * 最新消息文本
     */
    @NotNull(message = "最新消息文本不能为空")
    @ApiModelProperty("最新消息文本")
    private String newMessage;

    /**
     * 是否已处理 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否已处理")
    private String isHandle;

    /**
     * 处理类型 NO_NEED_HANDLING:不需要处理 NEED_HANDLING:需要处理 NEED_BUSINESS_OPERATION_HANDLING:需要业务操作处理
     */
    @NotNull(message = "处理类型不能为空")
    @ApiModelProperty("处理类型")
    private String handleType;

    /**
     * 主题内容类型编码 ORG_OR_DEPT:组织或部门 INTELLIGENT_HARDWARE_EQUIPMENT:智能硬件设备 OMS_TARGET_CYCLE:目标周期表 OMS_EVALUATION_OBJECT_TARGET_CYCLE:被评对象目标周期表 OMS_TARGET:目标表 OMS_TARGET_CATEGORY:目标分类表 OMS_TARGET_OBJECTIVE:指标表 OMS_TASK:任务表 OMS_ORG_INDUCTION_RECORD:就职记录表 OMS_FRAMEWORK_ORIGINAL_ROLE_MEMBER:身份人员表 OMS_ORG_DEPT:部门表 OMS_BASE_HOST:宿主表 OMS_FRAMEWORK_SPACE:空间表 OMS_TSPE_CYCLE_STAGE_DATA:周期阶段资料记录 OMS_EVALUATION_TEMPLATE:评价模板 OMS_EVALUATION_PORTRAIT:评价画像表 OMS_ORG_POSITION:职务表 OMS_VIRTUAL_ORG_MEMBER:虚拟组织成员表 OMS_PLANNING:规划资料表 OMS_FRAMEWORK_USERS:个人账号表 OMS_EXECUTE_CYCLE_STAGE:执行周期阶段表 OMS_CONF_SCHEME:配置方案表 OMS_EVA_OBJ_TARGET_CYCLE_OSET:被评对象目标周期目标设置表 OMS_EVA_OBJ_TARGET_CYCLE_WEIGHT_SET:被评对象目标周期权重设置表 OMS_NOTICE:通知公告表 OMS_CYCLE:周期表 OMS_EVALUATION_SUBJECT:评价主题表 OMS_BIZ_APP_BATCH:业务应用批次表 OMS_EVA_BATCH_RELATED_SET:评价模板批次相关设置表 OMS_TARGET_CYCLE_PLAN_SET:目标周期规划设置表 OMS_TARGET_OBJECTIVE_PLAN_EXTEND:指标扩展规划设置表 OMS_MESSAGE_CHANNEL:通道表 OMS_ORG_ORGANIZATION:组织表 OMS_PROJECT:项目表 OMS_ORG_DEPT:部门表 OMS_QUESTION:问题表 OMS_OFFICIAL_DOCUMENT:公文表 OMS_VIRTUAL_ORG:虚拟组织表 OMS_MESSAGE:消息表 OMS_MESSAGE_LOCATION:消息位置表 OMS_MESSAGE_MEMBER:成员接收消息表 OMS_MESSAGE_MEMBER_CHANNEL_RELATION:成员通道关系表
     */
    @ApiModelProperty("主题内容类型编码")
    private String themeContentTypeCode;

    /**
     * 主题内容ID
     */
    @ApiModelProperty("主题内容ID")
    private String themeContentId;

    /**
     * toB或toC场景 TOB_SCENE:toB场景 TOC_SCENE:toC场景
     */
    @NotNull(message = "toB或toC场景不能为空")
    @ApiModelProperty("toB或toC场景")
    private String borcScene;

    /**
     * 发送方角色 SYSTEM:第三方系统 USER:用户 ASSISTANT:助手
     */
    @NotNull(message = "发送方角色不能为空")
    @ApiModelProperty("发送方角色")
    private String messageRole;

    /**
     * 发送方是否助手 TRUE:是 FALSE:否
     */
    @NotNull(message = "发送方是否助手不能为空")
    @ApiModelProperty("发送方是否助手")
    private String isAssistant;

    /**
     * 发送方就职部门ID
     */
    @ApiModelProperty("发送方就职部门ID")
    private String senderDeptId;

    /**
     * 发送方虚拟组织成员ID
     */
    @ApiModelProperty("发送方虚拟组织成员ID")
    private String senderVirtualOrgMemberId;

    /**
     * 发送方就职记录ID
     */
    @ApiModelProperty("发送方就职记录ID")
    private String senderInductionRecordId;

    /**
     * 发送方身份人员ID
     */
    @ApiModelProperty("发送方身份人员ID")
    private String senderOriginalRoleMemberId;

    /**
     * 发送方账号ID
     */
    @ApiModelProperty("发送方账号ID")
    private String senderUserId;

    /**
     * 发送方头像地址
     */
    @NotNull(message = "发送方头像地址不能为空")
    @ApiModelProperty("发送方头像地址")
    private String senderProfilePictureAddress;

    /**
     * 发送方姓名
     */
    @NotNull(message = "发送方姓名不能为空")
    @ApiModelProperty("发送方姓名")
    private String nameOfSender;

    /**
     * 发送方空间ID
     */
    @NotNull(message = "发送方空间ID不能为空")
    @ApiModelProperty("发送方空间ID")
    private String senderSpaceId;

    /**
     * 发送方联盟应用ID
     */
    @NotNull(message = "发送方联盟应用ID不能为空")
    @ApiModelProperty("发送方联盟应用ID")
    private String senderAppId;

    /**
     * 接收方身份人员ID
     */
    @ApiModelProperty("接收方身份人员ID")
    private String receiveOriginalRoleMemberId;

    /**
     * 接收方账号ID
     */
    @ApiModelProperty("接收方账号ID")
    private String receiveUserId;

    /**
     * 接收方头像地址
     */
    @NotNull(message = "接收方头像地址不能为空")
    @ApiModelProperty("接收方头像地址")
    private String receiveProfilePictureAddress;

    /**
     * 接收方姓名
     */
    @NotNull(message = "接收方姓名不能为空")
    @ApiModelProperty("接收方姓名")
    private String nameOfReceive;

    /**
     * 接收方空间ID
     */
    @NotNull(message = "接收方空间ID不能为空")
    @ApiModelProperty("接收方空间ID")
    private String receiveSpaceId;

    /**
     * 接收方联盟应用ID
     */
    @NotNull(message = "接收方联盟应用ID不能为空")
    @ApiModelProperty("接收方联盟应用ID")
    private String receiveAppId;

    /**
     * 通用数值字段（整数型）
     */
    @NotNull(message = "通用数值字段（整数型）不能为空")
    @ApiModelProperty("通用数值字段（整数型）")
    private Long comNumField;

    /**
     * 操作时间
     */
    @NotNull(message = "操作时间不能为空")
    @ApiModelProperty("操作时间")
    private Date operateTime;

}
